package net.seehealth.healthpad.application.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import android.text.format.DateFormat;


/**
 * 字符串工具类
 * @author赵文斌
 *
 */
public class DateUtil {
	
	 /**
     * 格式化日期
     * @param date 日期,Date类型
     * @param exmpl 格式化表达式
     * @return 格式化字符串日期
     */
    public static String formatDate(Date date , String exmpl) {
        String strDate = "";
        if(StringUtil.isNotEmpty(exmpl) && CommonUtil.isNotEmpty(date)) {
        	try {
        		SimpleDateFormat formatter = new SimpleDateFormat (exmpl);
                strDate = formatter.format(date);
            }
            catch(Exception e) {
                e.printStackTrace();
            }
        }
        return strDate;
    }
    
    /**
	 * 比较两个字符串时间
	 * @param startDate 开始时间
	 * @param endDate  结束时间
	 * @return 结束时间大于开始时间为真
	 */
	public static boolean dateCompare(String startDate, String endDate) {
		if (startDate == null || "".equals(endDate) || endDate == null
				|| "".equals(endDate)) {
			return false;
		} else {
			if (startDate.equals(endDate)) 
				return false;

			int fen1 = startDate.indexOf(" ");
			int fen2 = endDate.indexOf(" ");
			int nian1 = startDate.substring(0, fen1).indexOf("-");
			int nian2 = endDate.substring(0, fen2).indexOf("-");
			int yue1 = startDate.substring(nian1 + 1, fen1).indexOf("-")
					+ nian1 + 1;
			int yue2 = endDate.substring(nian2 + 1, fen2).indexOf("-") + nian2
					+ 1;

			int shi1 = startDate.indexOf(":");
			int shi2 = endDate.indexOf(":");
			int min1 = startDate.substring(shi1 + 1).indexOf(":") + shi1 + 1;
			int min2 = endDate.substring(shi2 + 1).indexOf(":") + shi2 + 1;

			if (startDate.substring(0, min1).equals(endDate.substring(0, min2)))
				return false;

			// 年
			if (Integer.parseInt(startDate.substring(0, nian1)) > Integer
					.parseInt(endDate.substring(0, nian2))) 
				return false;
			else if (Integer.parseInt(startDate.substring(0, nian1)) < Integer
					.parseInt(endDate.substring(0, nian2)))
				return true;

			// 月
			if (Integer.parseInt(startDate.substring(nian1 + 1, yue1)) > Integer
					.parseInt(endDate.substring(nian2 + 1, yue2))) 
				return false;
			else if (Integer.parseInt(startDate.substring(nian1 + 1, yue1)) < Integer
					.parseInt(endDate.substring(nian2 + 1, yue2)))
				return true;

			// 日
			if (Integer.parseInt(startDate.substring(yue1 + 1, fen1)) > Integer
					.parseInt(endDate.substring(yue2 + 1, fen2))) 
				return false;
			else if (Integer.parseInt(startDate.substring(yue1 + 1, fen1)) < Integer
					.parseInt(endDate.substring(yue2 + 1, fen2)))
				return true;
			// 时
			if (Integer.parseInt(startDate.substring(fen1 + 1, shi1)) > Integer
					.parseInt(endDate.substring(fen2 + 1, shi2))) 
				return false;
			else if (Integer.parseInt(startDate.substring(fen1 + 1, shi1)) < Integer
					.parseInt(endDate.substring(fen2 + 1, shi2)))
				return true;
			// 分
			if (Integer.parseInt(startDate.substring(shi1 + 1, min1)) > Integer
					.parseInt(endDate.substring(shi2 + 1, min2))) 
				return false;
			else if (Integer.parseInt(startDate.substring(shi1 + 1, min1)) < Integer
					.parseInt(endDate.substring(shi2 + 1, min2)))
				return true;
			// //秒
			if(Integer.parseInt(startDate.substring(min1+1)) >
				Integer.parseInt(endDate.substring(min2+1)))
			return false;
		}
		return true;
	}
	
	/**
	 * 根据字符串时间获取当前时间离1970年1月1号的毫秒数
	 * @param date
	 * @param exmpl
	 * @return
	 */
	public static long getTime(String date, String exmpl) {
		long time = 0;
		SimpleDateFormat format = new SimpleDateFormat(exmpl);
		try {
			time = format.parse(date).getTime();
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return time;
	}
	
	/**
	 * 获取当前日期
	 */
	public static String getDate() {
		return DateFormat.format("yyyy-MM-dd", Calendar.getInstance()).toString();
	}
	
	/**
	 * 获取当前时间，默认格式为：hh:mm:ss
	 */
	public static String getTime() {
		return DateFormat.format("hh:mm:ss", Calendar.getInstance()).toString();
	}
	
	/**
	 * 获取当前时间的毫秒数
	 */
	public static long getMillisecond() {
		return new Date().getTime();
	}
	
	/**
	 * 获取当前日期和时间，格式：yyyy-MM-dd hh:mm:ss
	 * @return
	 */
	public static String getDateTime(){
		return getDate() + " " + getTime();
	}
	
	/**
	 * 以指定格式获取当前时间
	 * @param format
	 * @return
	 */
	public static String getTime(String format){
		return DateFormat.format(format, Calendar.getInstance()).toString();
	}
	
	/**
	 * 获取标准日期显示
	 */
	public static String getFormateDate(int year, int month, int day){
		String systemTime = year + "-" + (month < 10 ? "0" + month : month)
				+ "-" + (day < 10 ? "0" + day : day);
		return systemTime;
	}

	/**
	 * 将 "2012-03-15"时间 转化为int[]
	 * @param s 目标字符串
	 * @return 转换后的数组
	 */
	public static int[] string2Date(String s) {
		int[] res = new int[3];
		String[] temp1 = s.split("-");
		res[0] = Integer.parseInt(temp1[0]);
		res[1] = Integer.parseInt(temp1[1]);
		res[2] = Integer.parseInt(temp1[2]);
		return res;
	}
}
